package gridmapper;

/**
 *
 * @author estell
 */
public interface Constants {

	public static final int WATER_CURVES = 0;
	public static final int GRASS = 1;
	public static final int DIRT = 2;
	public static final int CRACKED = 3;
	public static final int JUNGLE = 4;
	public static final int SWAMP = 5;

	public static final int MARSH = 6;
	public static final int ROCKS = 7;
	public static final int RIVER = 8;
	public static final int WATER = 9;
	public static final int HILLS = 10;
	public static final int TREES = 10;
	public static final int MOUNTAINS = 10;


	/**
	 *
	 */
	public enum Type {
		TYPE_GROUND("*"),
		TYPE_PATH("+"),
		TYPE_LIQUID("~"),
		TYPE_ROCK("r"),
		TYPE_FOREST("@"),
		TYPE_JUNGLE("%"),
		TYPE_DOOR("\\"),
		TYPE_BUILDING("#"),
		TYPE_ICE("i"),
		TYPE_DIRT("_"),
		TYPE_TEMP("-"),
		TYPE_MOUNTAINS("^"),
		TYPE_UNKNOWN("X");
		
		private String value = "";

		/**
		 * @param val val
		 */
		Type(String val) {
			this.value = val;
		}

		/**
		 * @param other val
		 * @return val
		 */
		public boolean equals(Type other) {
			if (other == null) {
				return false;
			}
			return this.value.equals(other.value);
		}

		/**
		 * @param other val
		 * @return val
		 */
		public boolean equals(String other) {
			if (other == null) {
				return false;
			}
			return this.value.equals(other);
		}

		/**
		 * @return val
		 */
		public String getValue() {
			return this.value;
		}

		/**
		 * @param value val
		 */
		public void setValue(String value) {
			this.value = value;
		}

		@Override
		public String toString() {
			return this.value;
		}
	}

	/**
	 *
	 */
	public enum Orientation {

		NORTH("n"),
		SOUTH("s"),
		EAST("e"),
		WEST("w"),
		UNKNOWN("x");
		private String value = "";

		/**
		 * @param val val
		 */
		Orientation(String val) {
			this.value = val;
		}

		/**
		 * @param other val
		 * @return val
		 */
		public boolean equals(Orientation other) {
			if (other == null) {
				return false;
			}
			return this.value.equals(other.value);
		}

		/**
		 * @param other val
		 * @return val
		 */
		public boolean equals(String other) {
			if (other == null) {
				return false;
			}
			return this.value.equals(other);
		}

		/**
		 * @return val
		 */
		public String getValue() {
			return this.value;
		}

		/**
		 * @param value val
		 */
		public void setValue(String value) {
			this.value = value;
		}

		@Override
		public String toString() {
			return this.value;
		}
	}

	/**
	 *
	 */
	public enum Phase {

		OPEN("o"),
		BLOCKED("x");

		private String value = "";

		/**
		 * @param val val
		 */
		Phase(String val) {
			this.value = val;
		}

		/**
		 * @param other val
		 * @return val
		 */
		public boolean equals(Phase other) {
			if (other == null) {
				return false;
			}
			return this.value.equals(other.value);
		}

		/**
		 * @param other val
		 * @return val
		 */
		public boolean equals(String other) {
			if (other == null) {
				return false;
			}
			return this.value.equals(other);
		}

		/**
		 * @return val
		 */
		public String getValue() {
			return this.value;
		}

		/**
		 * @param value val
		 */
		public void setValue(String value) {
			this.value = value;
		}

		@Override
		public String toString() {
			return this.value;
		}
	}
}
